#ifndef TIC_H
#define TIC_H

// 前向声明代替包含
struct interface;
typedef struct interface* face_p;

// LVGL事件前向声明
typedef struct _lv_event_t lv_event_t;

#include <stdbool.h>
#define SIZE 3
char sign[SIZE][SIZE];
lv_timer_t * game_timer;

void tic(face_p head);// ＃界面

void tic_cell(lv_event_t * e);// 返回按钮事件

// 声明外部函数
extern lv_obj_t *re_label(void);//返回标签

// 棋盘初始化
void init_tic();

/**
 * @brief 刷新游戏UI
 */
void Chessboard(lv_obj_t * cont_tic, char sign[SIZE][SIZE]);

// 释放内存
void cleanup();

typedef struct tic
{
    lv_obj_t * labell;
    lv_obj_t * cont_tic;
    lv_obj_t * game_over_label;
    char a[2];
    int temp;   //用于判断是玩家0还是X
    lv_obj_t * obj;
    int obj_j;  //判断底部按件是否隐藏
    face_p head;
} main_tic_t, *main_tic_p;

//＃逻辑
void main_tic(lv_timer_t * timer);
// 菜单按钮事件
void menu_tic(lv_event_t * e);
// home按钮事件
void home_tic(lv_event_t * e);
// 重置按钮事件
void reset_tic(lv_event_t * e);

#endif